home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1997 December / PC Pro December 1997 CD-Rom coverdisc.iso / symantec / dbAnywh / JAVA.BIN / CLASSES.ZIP / sun / tools / tree / InlineMethodExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-14  |  2.3 KB  |  55 lines

  1. package sun.tools.tree;
  2.  
  3. import java.io.PrintStream;
  4. import sun.tools.asm.Assembler;
  5. import sun.tools.java.Constants;
  6. import sun.tools.java.Environment;
  7. import sun.tools.java.FieldDefinition;
  8. import sun.tools.java.Type;
  9.  
  10. public class InlineMethodExpression extends Expression {
  11.    FieldDefinition field;
  12.    Statement body;
  13.  
  14.    InlineMethodExpression(int var1, Type var2, FieldDefinition var3, Statement var4) {
  15.       super(150, var1, var2);
  16.       this.field = var3;
  17.       this.body = var4;
  18.    }
  19.  
  20.    public Expression inline(Environment var1, Context var2) {
  21.       this.body = this.body.inline(var1, new Context(var2, this));
  22.       return this.body != null && this.body.op != 149 ? this : null;
  23.    }
  24.  
  25.    public Expression inlineValue(Environment var1, Context var2) {
  26.       this.body = this.body.inline(var1, new Context(var2, this));
  27.       return (Expression)(this.body.op == 149 ? ((InlineReturnStatement)this.body).expr : this);
  28.    }
  29.  
  30.    public Expression copyInline(Context var1) {
  31.       InlineMethodExpression var2 = (InlineMethodExpression)((Node)this).clone();
  32.       if (this.body != null) {
  33.          var2.body = this.body.copyInline(var1, true);
  34.       }
  35.  
  36.       return var2;
  37.    }
  38.  
  39.    public void code(Environment var1, Context var2, Assembler var3) {
  40.       this.codeValue(var1, var2, var3);
  41.    }
  42.  
  43.    public void codeValue(Environment var1, Context var2, Assembler var3) {
  44.       CodeContext var4 = new CodeContext(var2, this);
  45.       this.body.code(var1, var4, var3);
  46.       var3.add(var4.breakLabel);
  47.    }
  48.  
  49.    public void print(PrintStream var1) {
  50.       var1.print("(" + Constants.opNames[super.op] + "\n");
  51.       this.body.print(var1, 1);
  52.       var1.print(")");
  53.    }
  54. }
  55.